package com.aaa.service.impl;

import com.aaa.dao.RoleDao;
import com.aaa.entity.Menu;
import com.aaa.entity.PageSort;
import com.aaa.entity.Role;
import com.aaa.service.RoleService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author ：dudu（12232347710@qq.com）
 * @date ：Created in 2022/6/28 17:22
 * @description：
 * @modified By：
 */
@Service
public class RoleServiceImpl implements RoleService {
    @Autowired
    private RoleDao roleDao;
    @Override
    public Page<Role> findAllRole(PageSort pageSort) {
        //开始分页
        PageHelper.startPage(pageSort.getPage(), pageSort.getLimit());
        List<Role> allRole = roleDao.findAllRole(pageSort);
        com.github.pagehelper.Page listWithPage = (com.github.pagehelper.Page) allRole;
        return listWithPage;
    }
    /**
     * @author     ：dudu
     * @Description: 新增数据
    */
    @Override
    public Role addRole(Role role) {
        this.roleDao.addRole(role);
        return role;
    }
    /**
     * @author     ：dudu
     * @Description:添加角色菜单
    */
    @Override
    public void insertRoleMenu(int roleId, String[] menusId) {
        for (int i = 0; i < menusId.length; i++) {
            roleDao.insertRoleMenu(roleId, menusId[i]);
        }
    }

    /**
     * 通过主键删除数据
     *
     * @param roleId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer roleId) {
        roleDao.deleteByRoleId(roleId);
        return this.roleDao.deleteById(roleId) > 0;
    }
    /**
     * @author     ：dudu
     * @Description: 根据角色ID删除
    */
    @Override
    public int deleteByRoleId(Integer roleId) {
        return roleDao.deleteByRoleId(roleId);
    }
    /**
     * @author     ：dudu
     * @Description: 通过修改 在查询id的单挑数据
    */
    @Override
    public Role updateRole(Role role) {
        this.roleDao.updateRole(role);
        return this.queryById(role.getRoleId());
    }
    /**
     * @author     ：dudu
     * @Description: 通过ID查询单条数据
    */
    @Override
    public Role queryById(Integer roleId) {
        return this.roleDao.queryById(roleId);
    }
    /**
     * @author     ：dudu
     * @Description: 修改角色菜单
    */
    @Override
    public void updateRoleMenu(Integer roleId, String[] menusId) {
        roleDao.deleteRoleMenu(roleId);
        for (int i = 0; i < menusId.length; i++) {
            roleDao.insertRoleMenu(roleId, menusId[i]);
        }
    }
    /**
     * @author     ：dudu
     * @Description: 查询所有菜单
    */
    @Override
    public List<Menu> selectAllMenu() {
        return roleDao.selectAllMenu();
    }
    /**
     * @author     ：dudu
     * @Description: 查询角色菜单
    */
    @Override
    public List<Integer> findSelectMenu(int roleId) {
        return roleDao.findSelectMenu(roleId);
    }
}
